Маша узнала о новой, модной
структуре. В ней есть “push” и “pop”.
Реализуйте стек с двумя
операциями. “Первая” операция добавляет элемент в стек, а “вторая” удаляет элемент
из стека. На каждую “вторую” операцию необходимо вывести удаленное число. Гарантируется,
что всегда есть, что удалять.
Вход. В
первой строке находится число операций n
(1 ≤ n ≤ 105).
В следующих n строках первое число –
номер операции, второе (только для “первой” операции) – добавляемое число. Это
число является натуральным и не превосходит 105.
Выход. Выведите
все удаленные числа по одному в отдельной строке.
Пример
входа 1 |
Пример
выхода 1 |
6 1 1 1 2 2 1 4 2 2 |
2 4 1 |
|
|
Пример
входа 2 |
Пример
выхода 2 |
3 1 1 1 2 1 3 |
|
структуры
данных – стек
В задаче следует
промоделировать работу стека.
Рассмотрим
операции со стеком в первом примере:
Объявим рабочий
стек.
stack<int> s;
Читаем количество операций n.
scanf("%d", &n);
Последовательно обрабатываем n операций.
for (int i = 0; i <
n; i++)
{
scanf("%d",
&op);
Вставка элемента, операция push.
if (op == 1)
{
scanf("%d",
&x);
s.push(x);
}
Извлечение элемента, операция pop.
else
{
printf("%d\n",
s.top());
s.pop();
}
}
import java.util.*;
public class Main
{
public static void
main(String[] args)
{
Scanner con = new
Scanner(System.in);
Stack<Integer> s = new
Stack<Integer>();
int n = con.nextInt();
for (int i = 0;
i < n; i++)
{
int op = con.nextInt();
if (op ==
1)
{
int x = con.nextInt();
s.push(x);
}
else
System.out.println(s.pop());
}
con.close();
}
}
import java.util.*;
class MyStack
{
private
Vector<Integer> v;
MyStack()
{
v = new
Vector<Integer>();
}
public void
push(int x)
{
v.add(x);
}
public int
pop()
{
int last = v.lastElement();
v.remove(v.size()
- 1);
return last;
}
}
public class Main
{
public static void
main(String[] args)
{
Scanner con = new
Scanner(System.in);
MyStack s = new
MyStack();
int n = con.nextInt();
for (int i = 0;
i < n; i++)
{
int op = con.nextInt();
if (op ==
1)
{
int x = con.nextInt();
s.push(x);
}
else
System.out.println(s.pop());
}
con.close();
}
}
Читаем количество операций n.
n = int(input())
Список stack будем
использовать для моделирование стека.
stack = []
Последовательно обрабатываем n операций.
for i in range(n):
lst = list(map(int,input().split()))
Вставка элемента, операция push.
if (lst[0] == 1):
stack.append(lst[1])
Извлечение элемента, операция pop.
else:
print(stack.pop())